home *** CD-ROM | disk | FTP | other *** search
- {
- Q: How do I reduce the amount of memory taken from the data
- segment? (or How do I allocate memory dynamically?)
-
- A:
- }
- Let's say your data structure looks like this:
-
- type
- TMyStructure = record
- Name: String[40];
- Data: array[0..4095] of Integer;
- end;
-
- That's too large to be allocated globally, so instead of
- declaring a global variable,
-
- var
- MyData: TMyStructure;
-
- you declare a pointer type,
-
- type
- PMyStructure = ^TMyStructure;
-
- and a variable of that type,
-
- var
- MyDataPtr: PMyStructure;
-
- Such a pointer consumes only four bytes of the data segment.
-
- Before you can use the data structure, you have to allocate it
- on the heap:
-
- New(MyDataPtr);
-
- and now you can access it just like you would global data. The
- only difference is that you have to use the caret operator to
- dereference the pointer:
-
- MyDataPtr^.Name := 'Lloyd Linklater';
- MyDataPtr^.Data[0] := 12345;
-
- Finally, after you're done using the memory, you deallocate it:
-
- Dispose(MyDataPtr);